/**
 * Copyright 2018 人人开源 http://www.renren.io
 * <p>
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 * <p>
 * http://www.apache.org/licenses/LICENSE-2.0
 * <p>
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */

package com.freeter.modules.sys.service.impl;

import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.freeter.common.utils.PageUtils;
import com.freeter.common.utils.Query;
import com.freeter.modules.sys.dao.SysDictDao;
import com.freeter.modules.sys.entity.SysDictEntity;
import com.freeter.modules.sys.service.SysDictService;

import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;


@Service("sysDictService")
public class SysDictServiceImpl extends ServiceImpl<SysDictDao, SysDictEntity> implements SysDictService {

    @Override
    public PageUtils queryPage(Map<String, Object> params) {
        String name = (String)params.get("name");

        Page<SysDictEntity> page = this.selectPage(
                new Query<SysDictEntity>(params).getPage(),
                new EntityWrapper<SysDictEntity>()
                    .like(StringUtils.isNotBlank(name),"name", name)
        );

        return new PageUtils(page);
    }


    @Override
    public SysDictEntity selectDictByCode(String dictCode) {
        Wrapper<SysDictEntity> queryWrapper = new EntityWrapper<>();
        queryWrapper.eq("code",dictCode);
        queryWrapper.eq("del_flag",0);
        return this.selectOne(queryWrapper);
    }

    @Override
    public List<Map<String, Object>> execCommonPopupSelect(String sql, Map<String, Object> queryMap,Map<String,Object> sysValMap,String orderBysql) {
        Wrapper queryWrapper = new EntityWrapper();
        String queryCode = (String) queryMap.get("queryCode");
        queryMap.remove("queryCode");
        queryMap.remove("page");
        queryMap.remove("queryModel");
        for(Map.Entry<String,Object> entry : queryMap.entrySet()){
            if(entry.getValue() != null && StringUtils.isNotBlank(entry.getValue().toString())) {
                String vlu = entry.getValue().toString();
                String suff = vlu.substring(vlu.length()-1);
                if(   vlu.length()>1){
                    vlu = vlu.replaceAll("\\*","");
                }
                queryWrapper.like (entry.getKey(), vlu);
            }
        }
        Integer pageSize =10;
        if("s_yjconfirm_choose".equals(queryCode) || "s_optconfirm_choose".equals(queryCode)||"s_itemGroup".equals(queryCode)){
            pageSize = 1000;
        }

        return this.baseMapper.selectCommonList(sql,queryWrapper,sysValMap,pageSize,orderBysql);
    }

}
